package com.xuecheng.api.course;

import com.xuecheng.framework.domain.course.*;
import com.xuecheng.framework.domain.course.ext.CourseView;
import com.xuecheng.framework.domain.course.ext.TeachplanNode;
import com.xuecheng.framework.domain.course.request.CourseListRequest;
import com.xuecheng.framework.domain.course.response.CoursePublishResult;
import com.xuecheng.framework.model.response.QueryResponseResult;
import com.xuecheng.framework.model.response.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PathVariable;

@Api(description = "课程管理管理接口,提供课程的增, 删, 改, 查")
public interface CourseControllerApi {

    @ApiOperation("课程计划查询")
    public TeachplanNode findTeachplanList(String courseId);

    @ApiOperation("添加课程计划")
    public ResponseResult addTeachplan(Teachplan teachplan);

    @ApiOperation("查询课程列表")
    public QueryResponseResult findCourseList(int page, int size, CourseListRequest courseListRequest);

    @ApiOperation("新增课程")
    public ResponseResult addCourse(CourseBase courseBase);

    @ApiOperation("修改课程")
    public ResponseResult updateCourse(CourseBase courseBase);

    @ApiOperation("根据id查询course")
    public CourseBase findById(String courseid);

    @ApiOperation("根据courseid获取课程营销信息")
    public CourseMarket findByCourseId(String courseId);

    @ApiOperation("修改课程营销信息")
    public ResponseResult updateCourseMarket(String courseid, CourseMarket courseMarket);

    @ApiOperation("新增课程图片")
    ResponseResult addCoursePic(String courseId, String pic);

    @ApiOperation("查询课程图片")
    CoursePic findCoursePic(String courseId);

    @ApiOperation("删除课程图片")
    ResponseResult deletCoursePic(String courseId);

    @ApiOperation("课程视图查询")
    public CourseView courseview(String courseId);

    @ApiOperation("预览课程")
    public CoursePublishResult preview(String courseId);

    @ApiOperation("发布课程")
    public CoursePublishResult publish(@PathVariable String courseId);

    @ApiOperation("保存课程计划和媒资信息的关联")
    public ResponseResult saveTeachPlanAndMedia(TeachplanMedia teachplanMedia);
}
